#ifndef __MPU6050_H__
#define __MPU6050_H__

#include <stdint.h>
#include <stdbool.h>

#ifdef __cplusplus
extern "C" {
#endif

// MPU6050原始数据结构体
typedef struct {
    int16_t ax, ay, az; // 加速度
    int16_t gx, gy, gz; // 角速度
    int16_t temp;       // 温度
} MPU6050_RawData_t;

// 姿态角（欧拉角）结构体
typedef struct {
    float pitch;
    float roll;
    float yaw;
} MPU6050_Attitude_t;

// 初始化MPU6050，返回0成功，非0失败
int MPU6050_Init(void);
// 读取MPU6050原始数据，返回0成功，非0失败
int MPU6050_ReadRawData(MPU6050_RawData_t* data);
// 计算姿态角，返回pitch/roll/yaw
void MPU6050_CalcAttitude(const MPU6050_RawData_t* raw, MPU6050_Attitude_t* att);
// 获取一次姿态角（自动读取并计算），返回0成功，非0失败
int MPU6050_GetAttitude(MPU6050_Attitude_t* att);

#ifdef __cplusplus
}
#endif

#endif // __MPU6050_H__ 